home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / eulisp / mpfeel.lha / MPFeel / Modules / loopsII.em < prev    next >
Lisp/Scheme  |  1992-10-06  |  948b  |  45 lines

  1. (defmodule loopsII
  2.  
  3.   (lists macros0 extras0 others list-operators ccc)
  4.  
  5.   ()
  6.  
  7.   (defun map-while (ff pf)
  8.     (if (pf) 
  9.     (progn (ff)
  10.            (map-while ff pf))
  11.       nil))
  12.     
  13.  
  14.   (defmacro while (pred . forms)
  15.     `(let/cc @continue-cont@
  16.        (let/cc @break-cont@
  17.          (map-while (lambda () (progn ,@forms)) (lambda () ,pred)))))
  18.   
  19. ;;   (defmacro for (init test iter . body)
  20. ;;     `(progn
  21. ;;        ,init
  22. ;;        (while ,test
  23. ;;      ,@body
  24. ;;      ,iter)))
  25.  
  26.   (defmacro ++ (form . vals)
  27.     (cond ((atom form)
  28.        `(setq ,form (+ ,form 1)))
  29.       ((eq (car form) 'dynamic)
  30.        `(dynamic-setq ,(cadr form) (+ ,form 1)))
  31.       (t
  32.        `((setter ,(car form)) ,(cadr form) (+ ,form 1)))))         
  33.  
  34.   (defmacro -- (form)
  35.     (cond ((atom form)
  36.        `(setq ,form (- ,form 1)))
  37.       ((eq (car form) 'dynamic)
  38.        `(dynamic-setq ,(cadr form) (- ,form 1)))
  39.       (t
  40.        `((setter ,(car form)) ,(cadr form) (- ,form 1)))))         
  41.  
  42.  
  43.   (export map-while while ++ --)
  44. )
  45.